﻿using Nop.Core;
using Nop.Plugin.Widgets.Ribbon.Domain;
using System.Collections.Generic;

namespace Nop.Plugin.Widgets.Ribbon.Services
{
    public partial interface IRibbonService
    {
        /// <summary>
        /// Delete Ribbon
        /// </summary>
        /// <param name="Carousel">Ribbon</param>
        void DeleteRibbon(RibbonObject carousel);

        /// <summary>
        /// Gets all Ribbon
        /// </summary>
        /// <param name="name">name</param>
        /// <param name="pageIndex">Page index</param>
        /// <param name="pageSize">Page size</param>
        /// <returns>Ribbon</returns>
        IPagedList<RibbonObject> GetAllRibbons(string text = "", int pageIndex = 0, int pageSize = int.MaxValue);

       
        /// <summary>
        /// Gets a Ribbon
        /// </summary>
        /// <param name="RibbonId">Ribbon identifier</param>
        /// <returns>Ribbon</returns>
        RibbonObject GetRibbonById(int ribbonId);

         /// <summary>
        /// Inserts a Ribbon
        /// </summary>
        /// <param name="Ribbon">Ribbon</param>
        void InsertRibbon(RibbonObject ribbon);

        /// <summary>
        /// Updates the Ribbon
        /// </summary>
        /// <param name="Ribbon">Ribbon</param>
        void UpdateRibbon(RibbonObject ribbon);

        #region Carousel Entity

        /// <summary>
        /// Deletes a Ribbon product
        /// </summary>
        /// <param name="RibbonProduct">Ribbon Product</param>
        void DeleteRibbonProduct(RibbonProduct ribbonProduct);

        /// <summary>
        /// Gets a Ribbon Product by Ribbon identifier
        /// </summary>
        /// <param name="RibbonId">The Ribbon identifier</param>
        /// <returns>Ribbon Product</returns>
        IList<RibbonProduct> GetRibbonProductsByRibbonId(int ribbonId);

        /// <summary>
        /// Gets a Ribbon Entity
        /// </summary>
        /// <param name="RibbonProductId">Ribbon Product identifier</param>
        /// <returns>Ribbon Product</returns>
        RibbonProduct GetRibbonProductById(int ribbonProductId);

        /// <summary>
        /// Inserts a Ribbon Entity
        /// </summary>
        /// <param name="RibbonProduct">Ribbon Product</param>
        void InsertRibbonProduct(RibbonProduct ribbonProduct);

        /// <summary>
        /// Updates a Ribbon prodcut
        /// </summary>
        /// <param name="RibbonProduct">Ribbon Product</param>
        void UpdateRibbonProduct(RibbonProduct ribbonProduct);

        /// <summary>
        /// Updates a ribbon Entity
        /// </summary>
        /// <param name="ribbonProduct">Ribbon Entity</param>
        void UpdateRibbonProduct(RibbonProduct ribbonProduct);
        
        #endregion

    }
}
